home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / GEMFBIND / GEMFAST.SH < prev    next >
Text File  |  1990-02-21  |  10KB  |  339 lines

  1.  
  2. ;*========================================================================
  3. ;*
  4. ;* AESFAST GEM bindings.
  5. ;*
  6. ;*========================================================================
  7.  
  8. ;*************************************************************************
  9. ;*
  10. ;* GEMFAST.SH - 
  11. ;*  Assembler header file for asm programs using GEMFAST bindings.
  12. ;*  (Just like GEMFAST.H is for C).
  13. ;*************************************************************************
  14.          
  15. ;-------------------------------------------------------------------------
  16. ; Constants...
  17. ;-------------------------------------------------------------------------
  18.  
  19. G_BOX        = 20                         ; Object types
  20. G_TEXT       = 21
  21. G_BOXTEXT    = 22
  22. G_IMAGE      = 23
  23. G_USERDEF    = 24
  24. G_PROGDEF    = 24
  25. G_IBOX       = 25
  26. G_BUTTON     = 26
  27. G_BOXCHAR    = 27
  28. G_STRING     = 28
  29. G_FTEXT      = 29
  30. G_FBOXTEXT   = 30
  31. G_ICON       = 31
  32. G_TITLE      = 32
  33.  
  34. NONE         = $0000
  35. SELECTABLE   = $0001                 ; Object flags 
  36. DEFAULT      = $0002                 ; (defined as masks for AND/OR)
  37. EXIT         = $0004
  38. EDITABLE     = $0008
  39. RBUTTON      = $0010
  40. LASTOB       = $0020
  41. TOUCHEXIT    = $0040
  42. HIDETREE     = $0080
  43. INDIRECT     = $0100
  44.  
  45. NORMAL       = $0000
  46. SELECTED     = $0001                 ; Object states
  47. CROSSED      = $0002                 ; (defined as masks for AND/OR)
  48. CHECKED      = $0004
  49. DISABLED     = $0008
  50. OUTLINED     = $0010
  51. SHADOWED     = $0020
  52.  
  53. BSELECTABLE  = 0 ; $0001               ; Object flags 
  54. BDEFAULT     = 1 ; $0002               ; (defined as bit numbers for BTST)
  55. BEXIT        = 2 ; $0004
  56. BEDITABLE    = 3 ; $0008
  57. BRBUTTON     = 4 ; $0010
  58. BLASTOB      = 5 ; $0020
  59. BTOUCHEXIT   = 6 ; $0040
  60. BHIDETREE    = 7 ; $0080
  61. BINDIRECT    = 8 ; $0100
  62.  
  63. BSELECTED    = 0 ; $0001               ; Object states
  64. BCROSSED     = 1 ; $0002               ; (defined as bit numbers for BTST)
  65. BCHECKED     = 2 ; $0004
  66. BDISABLED    = 3 ; $0008
  67. BOUTLINED    = 4 ; $0010
  68. BSHADOWED    = 5 ; $0020
  69.                                         ; form_dial commands...
  70. FMD_START    = 0
  71. FMD_GROW     = 1
  72. FMD_SHRINK   = 2
  73. FMD_FINISH   = 3
  74.                                         ; objc_draw stuff...
  75. MAX_DEPTH    = 8
  76. R_TREE       = 0
  77.                                         ; evnt_multi events...
  78. MU_KEYBD     = $0001                   ; (defined as masks for AND/OR)
  79. MU_BUTTON    = $0002
  80. MU_M1        = $0004
  81. MU_M2        = $0008
  82. MU_MESAG     = $0010
  83. MU_TIMER     = $0020
  84.                                         ; keyboard states 
  85. K_RSHIFT     = $0001                   ; (defined as masks for AND/OR)
  86. K_LSHIFT     = $0002
  87. K_CTRL       = $0004
  88. K_ALT        = $0008
  89.                                         ; event message values 
  90. MN_SELECTED  = 10
  91. WM_REDRAW    = 20
  92. WM_TOPPED    = 21
  93. WM_CLOSED    = 22
  94. WM_FULLED    = 23
  95. WM_ARROWED   = 24
  96. WM_HSLID     = 25
  97. WM_VSLID     = 26
  98. WM_SIZED     = 27
  99. WM_MOVED     = 28
  100. WM_NEWTOP    = 29
  101. AC_OPEN      = 40
  102. AC_CLOSE     = 41
  103.  
  104.                                         ; Window Attributes 
  105. NAME         = $0001                    ; (defined as masks for AND/OR)
  106. CLOSER       = $0002
  107. FULLER       = $0004
  108. MOVER        = $0008
  109. INFO         = $0010
  110. SIZER        = $0020
  111. UPARROW      = $0040
  112. DNARROW      = $0080
  113. VSLIDE       = $0100
  114. LFARROW      = $0200
  115. RTARROW      = $0400
  116. HSLIDE       = $0800
  117.                                         ; wind_create flags 
  118. WC_BORDER    = 0                        
  119. WC_WORK      = 1
  120.                                         ; wind_get flags 
  121. WF_KIND      = 1
  122. WF_NAME      = 2
  123. WF_INFO      = 3
  124. WF_WORKXYWH  = 4
  125. WF_CURRXYWH  = 5
  126. WF_PREVXYWH  = 6
  127. WF_FULLXYWH  = 7
  128. WF_HSLIDE    = 8
  129. WF_VSLIDE    = 9
  130. WF_TOP       = 10
  131. WF_FIRSTXYWH = 11
  132. WF_NEXTXYWH  = 12
  133. WF_RESVD     = 13
  134. WF_NEWDESK   = 14
  135. WF_HSLSIZE   = 15
  136. WF_VSLSIZE   = 16
  137. WF_SCREEN    = 17
  138.                                         ; wind_update flags 
  139. END_UPDATE  = 0
  140. BEG_UPDATE  = 1
  141. END_MCTRL   = 2
  142. BEG_MCTRL   = 3
  143.                                         ; graf_mouse mouse types
  144. ARROW       = 0
  145. BEE         = 2
  146. TEXT_CRSR   = 1
  147. HOURGLASS   = 2
  148. POINT_HAND  = 3
  149. FLAT_HAND   = 4
  150. THIN_CROSS  = 5
  151. THICK_CROSS = 6
  152. OUTLN_CROSS = 7
  153. USER_DEF    = 255
  154. M_OFF       = 256
  155. M_ON        = 257
  156.                                         ; inside fill patterns  
  157. IP_HOLLOW   = 0
  158. IP_1PATT    = 1
  159. IP_2PATT    = 2
  160. IP_3PATT    = 3
  161. IP_4PATT    = 4
  162. IP_5PATT    = 5
  163. IP_6PATT    = 6
  164. IP_SOLID    = 7
  165.                                         ; normal graphics drawing modes 
  166. MD_REPLACE  = 1
  167. MD_TRANS    = 2
  168. MD_XOR      = 3
  169. MD_ERASE    = 4
  170.                                         ; bit blt rules 
  171. ALL_WHITE   = 0
  172. S_AND_D     = 1
  173. S_AND_NOTD  = 2
  174. S_ONLY      = 3
  175. NOTS_AND_D  = 4
  176. D_ONLY      = 5
  177. S_XOR_D     = 6
  178. S_OR_D      = 7
  179. NOT_SORD    = 8
  180. NOT_SXORD   = 9
  181. D_INVERT    = 10
  182. NOT_D       = 10
  183. S_OR_NOTD   = 11
  184. NOT_S       = 12
  185. NOTS_OR_D   = 13
  186. NOT_SANDD   = 14
  187. ALL_BLACK   = 15
  188.  
  189.                                         ; editable text field definitions 
  190. EDSTART     = 0
  191. EDINIT      = 1
  192. EDCHAR      = 2
  193. EDEND       = 3
  194.                                         ; editable text justification 
  195. TE_LEFT     = 0
  196. TE_RIGHT    = 1
  197. TE_CNTR     = 2
  198.  
  199. ;-------------------------------------------------------------------------
  200. ; Define some commonly-used structures as offsets.
  201. ;-------------------------------------------------------------------------
  202.  
  203.           .abs                          ; GRECT - graphics rectangle.
  204. g_x:      ds.w      1
  205. g_y:      ds.w      1
  206. g_w:      ds.w      1
  207. g_h:      ds.w      1
  208.  
  209.           .abs                          ; VRECT - VDI rectangle.
  210. v_x1:     ds.w      1
  211. v_y1:     ds.w      1
  212. v_x2:     ds.w      1
  213. v_y2:     ds.w      1
  214.  
  215.           .abs                          ; OBJECT
  216. ob_next:  ds.w      1
  217. ob_head:  ds.w      1
  218. ob_tail:  ds.w      1
  219. ob_type:  ds.w      1
  220. ob_flags: ds.w      1
  221. ob_state: ds.w      1
  222. ob_spec:  ds.l      1
  223. ob_x:     ds.w      1
  224. ob_y:     ds.w      1
  225. ob_width:
  226. ob_w:     ds.w      1
  227. ob_height:
  228. ob_h:     ds.w      1
  229. OBJ_SIZ    =        *
  230. OBJECT_SIZ =        *
  231.  
  232.              .abs                       ; TEDINFO
  233. te_ptext:    ds.l   1                   ; ptr to text             
  234. te_ptmplt:   ds.l   1                   ; ptr to template                   
  235. te_pvalid:   ds.l   1                   ; ptr to validation chrs. 
  236. te_font:     ds.w   1                   ; font                              
  237. te_junk1:    ds.w   1                   ; junk word               
  238. te_just:     ds.w   1                   ; justification                     
  239. te_color:    ds.w   1                   ; color information word  
  240. te_junk2:    ds.w   1                   ; junk word               
  241. te_thickness:ds.w   1                   ; border thickness        
  242. te_txtlen:   ds.w   1                   ; length of text string   
  243. te_tmplen:   ds.w   1                   ; length of template string
  244. TEDINF_SIZ   =      *
  245. TEDINFO_SIZ  =      *
  246.  
  247.              .abs                       ; ICONBLK
  248. ib_pmask:    ds.l   1
  249. ib_pdata:    ds.l   1
  250. ib_ptext:    ds.l   1
  251. ib_char:     ds.w   1
  252. ib_xchar:    ds.w   1
  253. ib_ychar:    ds.w   1
  254. ib_xicon:    ds.w   1
  255. ib_yicon:    ds.w   1
  256. ib_wicon:    ds.w   1
  257. ib_hicon:    ds.w   1
  258. ib_xtext:    ds.w   1
  259. ib_ytext:    ds.w   1
  260. ib_wtext:    ds.w   1
  261. ib_htext:    ds.w   1
  262. ICONBLK_SIZ   =     *
  263.  
  264.              .abs                       ; BITBLK
  265. bi_pdata:    ds.l   1
  266. bi_wb:       ds.w   1
  267. bi_hl:       ds.w   1
  268. bi_x:        ds.w   1
  269. bi_y:        ds.w   1
  270. bi_color:    ds.w   1
  271. BITBLK_SIZ    =     *
  272.  
  273.              .abs
  274.  rsh_vrsn:   ds.w   1   
  275.  rsh_object: ds.w   1 
  276.  rsh_tedinfo:ds.w   1
  277.  rsh_iconblk:ds.w   1
  278.  rsh_bitblk: ds.w   1 
  279.  rsh_frstr:  ds.w   1  
  280.  rsh_string: ds.w   1 
  281.  rsh_imdata: ds.w   1 
  282.  rsh_frimg:  ds.w   1  
  283.  rsh_trindex:ds.w   1
  284.  rsh_nobs:   ds.w   1   
  285.  rsh_ntree:  ds.w   1  
  286.  rsh_nted:   ds.w   1   
  287.  rsh_nib:    ds.w   1    
  288.  rsh_nbb:    ds.w   1    
  289.  rsh_nstring:ds.w   1
  290.  rsh_nimages:ds.w   1
  291.  rsh_rssize: ds.w   1 
  292.  RSHDR_SIZ    =     *
  293.  
  294. ;-------------------------------------------------------------------------
  295. ; Macros...
  296. ; Caveat:
  297. ;  This stuff is not currently supported as part of the GEMFAST bindings
  298. ;  system, but I have code which relies on these macros being in this
  299. ;  file, so I'm leaving it in.  For the curious, these macros are the
  300. ;  bare beginnings of a system to make it easier to program AES stuff
  301. ;  in assembler.  The current macros are involved with building resource
  302. ;  trees in source code.  Puzzling out how to use them is left as an
  303. ;  exercise for the reader <snicker>.
  304. ;            - Ian
  305. ;-------------------------------------------------------------------------
  306.  
  307. .macro    Teddef ptext,ptmpl,pvalid,font,rsvd1,just,color,rsvd2,thick,textlen,tmpllen
  308.           dc.l      \ptext,\ptmpl,\pvalid
  309.           dc.w      \font,\rsvd1,\just,\color
  310.           dc.w      \rsvd2,\thick,\textlen,\tmpllen
  311. .endm
  312.  
  313. .macro    Treedef datatype
  314.           .\datatype
  315. TR$OBJ$IDX   set 0
  316. TR$OBJ$INIT  set (^^streq \datatype,"text") | (^^streq \datatype,"data") 
  317. .endm
  318.  
  319. .macro    Objdef objidx,next,head,tail,type,flags,state,spec,x,y,w,h
  320.           .iif \?objidx, \objidx = TR$OBJ$IDX
  321.           .if  TR$OBJ$INIT
  322.           dc.w      \next,\head,\tail
  323.           dc.w      \type,\flags,\state
  324.           dc.l      \spec
  325.           dc.w      \x,\y,\w,\h
  326.           .else
  327.           ds.b      OBJ_SIZ
  328.           .endif
  329. TR$OBJ$IDX set TR$OBJ$IDX+1
  330. .endm
  331.  
  332. .macro    Objptr tree,objidx,areg
  333.           lea    [OBJ_SIZ * \objidx]+\tree,\areg
  334. .endm
  335.  
  336.  
  337.           .text
  338.           
  339.